import * as ExcelJs from 'exceljs';
import { saveAs } from "file-saver";


// 导出表格用方法
export default function onExportBasicExcel(tableColumns, tableData, filename) {
    // 创建工作簿
    const workbook = new ExcelJs.Workbook();
    // 添加sheet
    const worksheet = workbook.addWorksheet('new sheet');
    // 设置 sheet 的默认行高
    worksheet.properties.defaultRowHeight = 20;
    // 设置列
    worksheet.columns = generateHeaders(tableColumns);
    // 添加行
    worksheet.addRows(tableData);
    // 导出excel
    saveWorkbook(workbook, filename + '.xlsx');
}

// 解析 AntD Table 的 columns 和 dataSource
const DEFAULT_COLUMN_WIDTH = 20;
// 根据 antd 的 column 生成 exceljs 的 column
function generateHeaders(columns) {
    return columns?.map(col => {
        const obj = {
            // 显示的 name
            header: col.title,
            // 用于数据匹配的 key
            key: col.dataIndex,
            // 列宽
            width: col.width / 5 || DEFAULT_COLUMN_WIDTH,
        };
        return obj;
    })
}

function saveWorkbook(workbook, fileName) {
    // 导出文件
    workbook.xlsx.writeBuffer().then((data => {
        const blob = new Blob([data], { type: '' });
        saveAs(blob, fileName);
    }))
}




